package com.wxdc.nmgyt.nmgytwydc.greendao.ope;

import android.content.Context;

import com.wxdc.nmgyt.nmgytwydc.greendao.JcdInfoBeanDao;
import com.wxdc.nmgyt.nmgytwydc.greendao.manager.DbManager;
import com.wxdc.nmgyt.nmgytwydc.model.JcdInfoBean;
import com.wxdc.nmgyt.nmgytwydc.model.JcdInfoBean;

import org.greenrobot.greendao.query.QueryBuilder;

import java.util.List;

/**
 * Created by Administrator on 2018/5/24.
 */

public class JcdInfoBeanDaoOpe {
    //===================================insert======================================================
    /**
     * 添加数据至数据库
     *
     * @param context
     * @param jcdInfoBean
     */
    public static void insertData(Context context, JcdInfoBean jcdInfoBean) {
        DbManager.getDaoSession(context).getJcdInfoBeanDao().insert(jcdInfoBean);
    }
    /**
     * 将数据实体通过事务添加至数据库
     *
     * @param context
     * @param list
     */
    public static void insertData(Context context, List<JcdInfoBean> list){
        if (null == list || list.size() < 0) {
            return;
        }
        DbManager.getDaoSession(context).getJcdInfoBeanDao().insertInTx(list);
    }

    /**
     * 添加数据至数据库，如果存在，将原来的数据覆盖
     * 内部代码判断了如果存在就update(entity);不存在就insert(entity)；
     *(save 类似于insertOrReplace，区别在于save会判断传入对象的key，有key的对象执行更新，无key的执行插入。当对象有key但并不在数据库时会执行失败.适用于保存本地列表)
     * @param context
     * @param JcdInfoBean
     */
    public static void saveData(Context context, JcdInfoBean JcdInfoBean) {
        DbManager.getDaoSession(context).getJcdInfoBeanDao().save(JcdInfoBean);
    }

    /**
     * 传入的对象在数据库中，有则更新无则插入。推荐同步数据库时使用该方法
     * @param context
     * @param jcdInfoBean
     */
    public static void insertOrReplace (Context context,JcdInfoBean jcdInfoBean){
        DbManager.getDaoSession(context).getJcdInfoBeanDao().insertOrReplace(jcdInfoBean);
    }
    //========================================delete=================================================
    /**
     * 删除数据至数据库
     *
     * @param context
     * @param JcdInfoBean 删除具体内容
     */
    public static void deleteData(Context context, JcdInfoBean JcdInfoBean) {
        DbManager.getDaoSession(context).getJcdInfoBeanDao().delete(JcdInfoBean);
    }

    /**
     * 根据id删除数据至数据库
     *
     * @param context
     * @param id      删除具体内容
     */
    public static void deleteByKeyData(Context context, long id) {
        DbManager.getDaoSession(context).getJcdInfoBeanDao().deleteByKey(id);
    }

    /**
     * 根据实体删除
     * @param context
     * @param entitys
     */
    public static void deleteInTx(Context context,List<JcdInfoBean> entitys){
        DbManager.getDaoSession(context).getJcdInfoBeanDao().deleteInTx(entitys);
    }
    /**
     * 删除全部数据
     *
     * @param context
     */
    public static void deleteAllData(Context context) {
        DbManager.getDaoSession(context).getJcdInfoBeanDao().deleteAll();
    }
    //===========================================update==================================================
    /**
     * 更新数据库
     *
     * @param context
     * @param JcdInfoBean
     */
    public static void updateData(Context context, JcdInfoBean JcdInfoBean) {
        DbManager.getDaoSession(context).getJcdInfoBeanDao().update(JcdInfoBean);
    }
    //==========================================query==================================================
    /**
     * 查询所有数据
     *
     * @param context
     * @return
     */
    public static List<JcdInfoBean> queryAll(Context context) {
        QueryBuilder<JcdInfoBean> builder = DbManager.getDaoSession(context).getJcdInfoBeanDao().queryBuilder();

        return builder.build().list();
    }

    /**
     * 根据id，其他的字段类似
     *
     * @param context
     * @param id
     * @return
     */
    public static List<JcdInfoBean> queryForId(Context context, long id) {
        QueryBuilder<JcdInfoBean> builder = DbManager.getDaoSession(context).getJcdInfoBeanDao().queryBuilder();
        /**
         * 返回当前id的数据集合,当然where(这里面可以有多组，做为条件);
         * 这里build.list()；与where(StudentDao.Properties.Id.eq(id)).list()结果是一样的；
         * 在QueryBuilder类中list()方法return build().list();
         *
         */
        // Query<Student> build = builder.where(StudentDao.Properties.Id.eq(id)).build();
        // List<Student> list = build.list();
        return builder.where(JcdInfoBeanDao.Properties.Id.eq(id)).list();
    }
    /*
    * 根据用户ID
    * */
    public static List<JcdInfoBean> queryForGzdwdm(Context context, String gzdwdm) {
        QueryBuilder<JcdInfoBean> builder = DbManager.getDaoSession(context).getJcdInfoBeanDao().queryBuilder();
        /**
         * 返回当前id的数据集合,当然where(这里面可以有多组，做为条件);
         * 这里build.list()；与where(StudentDao.Properties.Id.eq(id)).list()结果是一样的；
         * 在QueryBuilder类中list()方法return build().list();
         *
         */
        // Query<Student> build = builder.where(StudentDao.Properties.Id.eq(id)).build();
        // List<Student> list = build.list();
        return builder.where(JcdInfoBeanDao.Properties.Gzdmdm.eq(gzdwdm)).list();
    }
    /*
   * 查询不同类型的监测点数据
   *  flag:1---->已经提交过的数据；2----->待提交的数据
   * */
    public static List<JcdInfoBean> queryForDifJcdData(Context context, String gzdwdm,int flag) {
        QueryBuilder<JcdInfoBean> builder = DbManager.getDaoSession(context).getJcdInfoBeanDao().queryBuilder();
        return builder.where(JcdInfoBeanDao.Properties.Gzdmdm.eq(gzdwdm),JcdInfoBeanDao.Properties.AuditFlag.eq(flag)).list();
    }

    /**
     * 找到所有监测点未提交数据
     * @param context
     * @param gzdwdm
     * @return
     */
    public static List<JcdInfoBean> queryForUnCommitJcdData(Context context, String gzdwdm) {
        QueryBuilder<JcdInfoBean> builder = DbManager.getDaoSession(context).getJcdInfoBeanDao().queryBuilder();
        return builder.where(JcdInfoBeanDao.Properties.Gzdmdm.eq(gzdwdm),JcdInfoBeanDao.Properties.AuditFlag.notEq(1)).list();
    }
    /*
   * 根据用户所在单位查询
   * */
    public static List<JcdInfoBean> queryForUseridAndState(Context context, String gzdwdm) {
        QueryBuilder<JcdInfoBean> builder = DbManager.getDaoSession(context).getJcdInfoBeanDao().queryBuilder();
        /**
         * 返回当前id的数据集合,当然where(这里面可以有多组，做为条件);
         * 这里build.list()；与where(StudentDao.Properties.Id.eq(id)).list()结果是一样的；
         * 在QueryBuilder类中list()方法return build().list();
         *
         */
        // Query<Student> build = builder.where(StudentDao.Properties.Id.eq(id)).build();
        // List<Student> list = build.list();
        return builder.where(JcdInfoBeanDao.Properties.Gzdmdm.eq(gzdwdm)).list();
    }
    /*
    * */
    public static JcdInfoBean queryForUseridAndYdName(Context context,String gzdwdm,String ydName){
        QueryBuilder<JcdInfoBean> builder = DbManager.getDaoSession(context).getJcdInfoBeanDao().queryBuilder();

        return builder.where(JcdInfoBeanDao.Properties.Gzdmdm.eq(gzdwdm),JcdInfoBeanDao.Properties.GEMNAME.eq(ydName)).unique();
    }

    /*
    * 根据用户ID和某字段进行模糊查询
    * */
    public static List<JcdInfoBean> queryForUseridLike(Context context, String gzdwdm,String likeStr) {
        QueryBuilder<JcdInfoBean> builder = DbManager.getDaoSession(context).getJcdInfoBeanDao().queryBuilder();
        /**
         * 返回当前id的数据集合,当然where(这里面可以有多组，做为条件);
         * 这里build.list()；与where(StudentDao.Properties.Id.eq(id)).list()结果是一样的；
         * 在QueryBuilder类中list()方法return build().list();
         *
         */
        builder.where(JcdInfoBeanDao.Properties.Gzdmdm.eq(gzdwdm),JcdInfoBeanDao.Properties.GEMNAME.like("%"+likeStr+"%"));
        return builder.list();
    }
    /*
    * 根据某字段进行模糊查询
    * */
    public static List<JcdInfoBean> queryForFieldLike(Context context, String likeStr) {
        QueryBuilder<JcdInfoBean> builder = DbManager.getDaoSession(context).getJcdInfoBeanDao().queryBuilder();
        builder.where(JcdInfoBeanDao.Properties.GEMNAME.like("%"+likeStr+"%"));
        return builder.list();
    }
    //===============================================================================================
}
